perm filename FAKE23.SAI[DOC,TOB] blob sn#234925 filedate 1976-09-01 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002
C00004 00003	WHILE TRUE DO BEGIN "ERR_BLOCK"
C00006 ENDMK
C⊗;
comment
	this version of fake finds the angular and position
	errors for the edge operator as a function of step height,
	position, and angle;
comment
	conf=sqrt(s0sq/(s0sq+n0sq)) ie cosine
	diff=s0sq;

BEGIN "EDGE_TEST"

DEFINE SAFE_ARRAY=1;	comment this makes all arrays safe;
REQUIRE "VISION.2[SYS,TOB]" SOURCE_FILE; comment vision language package;
REQUIRE EDGE_FILE;
REQUIRE EDGE_PRINT;
REQUIRE TV_VARIABLES;
REQUIRE FAKE_FILE;	! file for fake edges;
REQUIRE STATISTICS_FILE; ! file for mean and standard deviation;


EJINIT;	! init Hueckel operator;
MODIFY(BITS);
WHILE YES("TEST EDGE OPERATOR? ") DO BEGIN "TST_LOOP"
  REAL ALPHA,DELTA;
  ASK_FAKE;
  FAKE;
  OP_APPLY(NBHD_FAKE/2,NBHD_FAKE/2); ! try the edge operator on it;
  ERROR_FAKE(ALPHA,DELTA);  ! get angle and perpend distance errors;
  TCRLF;PRINT(ALPHA);PRINT(DELTA);
  TCRLF;PRINT(THETA_FAKE);PRINT(RHO_FAKE);
  END "TST_LOOP";
WHILE TRUE DO BEGIN "ERR_BLOCK"
  INTEGER K;
  INTEGER ENOUGH;
  ENOUGH←2000;
  MODIFY(ENOUGH);
  ASK_FAKE;
  NOISE_EDGE←NOISE_FAKE;
  ASK_EDGE; ! ask for values for edge operator cutoffs;
  BEGIN "ERR_A"
    REAL_ARRAY VALUE[1:2];
    REAL_ARRAY MEAN[1:2];
    REAL_ARRAY STD_DEV[1:2];
    DEFINE α=1;
    DEFINE β=2;

    SIMPLE PROCEDURE VAL;
    comment funarg called by NRMS_STAT;
    WHILE TRUE DO BEGIN
      FAKE;
      IF EJLI(NBHD_FAKE/2,NBHD_FAKE/2,0,0)∧¬BCOMP THEN BEGIN
        ERROR_FAKE(VALUE[α],VALUE[β]);
        RETURN;
        END;
      END;

    NRMS_STAT(VALUE,MEAN,STD_DEV,VAL,ENOUGH,50);
    comment obtain mean and std deviations for variables in arrays
      2 variables, ENOUGH samples, report every 50 samples;
    OUTSTR(CRLF&"MEAN AND STANDARD DEVIATION---ALPHA & DELTA "&CRLF);
    OUTSTR(CVG(MEAN[α]));OUTSTR(CVG(STD_DEV[α])&CRLF);
    OUTSTR(CVG(MEAN[β]));OUTSTR(CVG(STD_DEV[β])&CRLF);
    END "ERR_A";
  END "ERR_BLOCK";
END "EDGE_TEST";